Various types of imagers or image sensors are currently used, including charge-coupled device (CCD) image sensors and complementary metal-oxide semiconductor (CMOS) image sensors. CMOS technology offers many benefits, such as lower cost, ease of manufacturing, and a higher degree of integration over the CCD image sensors. However, a drawback of the CMOS image sensor technology is the presence of fixed-pattern noise (FPN). Fixed pattern noise is generated from a mismatch of circuit structures due to variations in the manufacturing processes of integrated circuits. The effect of fixed pattern noise in a CMOS image sensor is that groups of pixels, typically each column in a sensor array, exhibit relatively different strengths in response to uniform input light. FIG. 1 demonstrates the effect of fixed pattern noise on an image. In FIG. 1, an image 110 is sensed by the CMOS image sensor 120 via a sensor array 130. The sensor array 130 includes a matrix of pixel cells 132. Because of noise in the sensor array 130, a noise-corrupted image 140 is generated by the CMOS image sensor 120. Fixed pattern noise is largely responsible for the column-wise distortion apparent in the noise-corrupted image 140.
Fixed pattern noise is not the only noise source existent in a CMOS image sensor. Row noise—noise common to all pixels in a given row—may also exist. In FIG. 2, an image 210 is sensed by the CMOS image sensor 220 via a sensor array 230. The sensor array 230 includes a matrix of pixel cells 232. Because of noise in the sensor array 230, a noise-corrupted image 240 is generated by the CMOS image sensor 220. Row-wise noise is largely responsible for the row-wise distortion apparent in the noise-corrupted image 240. Even after correcting column-wise fixed pattern noise, row noise may still be evident in the corrected image.
To remove the effect of fixed pattern noise, conventional calibration processes involve measuring an output based on a known optical input and comparing it against an expected value. In CMOS image sensors, a light of known intensity and frequency is typically shone onto the sensors and used as an input calibration signal. In some cases, output from inactive dark pixel sensors may also be used during calibration to compare the sensors' output to an expected dark output. In principle, if there is no mismatch in the sensor devices, the voltage signal output from every pixel cell should be identical. In reality, however, significant differences in signal output values are read out between the pixel columns of the sensor array, even when a uniform input light stimulus is applied to the array. The difference between the pixel signal output values and the expected pixel signal output values is typically referred to as a pixel offset. The pixel offsets are computed and then stored for use in calibrating the entire sensor array.
In a conventional sensor array calibration procedure employing an offset reduction procedure, a respective calculated offset is applied to the output of each pixel during normal image sensor operation. A pixel whose un-calibrated output was higher than expected will have its signal output value reduced by the amount of its corresponding scaled offset value. Similarly, a pixel whose un-calibrated output was lower than expected will have its signal output value increased by the amount of its corresponding scaled offset value. Any change in operating mode that would affect the offset values will result in a necessary recalculation of offset values for each pixel.
Generating and storing accurate pixel offset values requires calculation time and additional memory resources. FIG. 3 show a conventional CMOS image sensor 300. The image sensor 300 includes a pixel array 310 organized into N pixel columns and R pixel rows. Upon readout of a row, parallel pixel outputs from each column (or N pixel outputs) are sent to a set of analog-to-digital converters (ADCs) 320. The digitized output from each pixel column is then sent to a set of readout buffers 330. In a typical image sensor 300, the digitized pixel outputs are processed into a serial data stream 340. Each of the array rows is read-out in row-by-row fashion. Generally, operations such as column-wise offset calibration and row noise correction (block 350) are applied to the serial data stream 340. In other words, the noise reducing processes are applied to each pixel output, sequentially, in the serial data stream 340. The result is that the noise reduction processes add significant delay to the overall readout of the N by R pixel signals. In addition, the offset values are measured from an expected reference value during calibration, thereby requiring a large number of bits, and therefore memory capacity, to represent the offset values.
There is, therefore, a need and desire for a method and apparatus for efficiently generating and applying noise correction values to pixel outputs of a CMOS imager, while reducing the required memory capacity.